<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;
use think\Request;

class Node extends Admin
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        // 查询node表
        $data = Db::name('node')
            ->field(true)
            ->paginate(4);
        // 分页
        $page = $data->render();

        $this->assign('data', $data);
        $this->assign('page', $page);
        return $this->fetch('node/index');

    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        return view('node/create');
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $data = $request->post();

        $res = Db::name('node')
            ->insert($data);
        if ($res) {
            $this->success('添加成功!',url('admin/node/index'));
        } else {
            $this->error('添加失败,请重新添加...');
        }
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        $data = Db::name('node')
            ->field(true)
            ->find($id);
        return view('',[
            'data'=>$data
        ]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        $put = $request->put();
        unset($put['_method']);
        // 更新
        $res = Db::name('node')
            ->where('id',$id)
            ->data($put)
            ->update();
        if ($res) {
            return $this->success('修改成功!',url('admin/node/index'));
        } else {
            return $this->error('修改失败,请重新修改!');
        }
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $data['status'] = true;
        // 执行删除
        Db::startTrans();
        try {
            Db::name('node')
                ->delete($id);

            Db::name('role_node')
                ->where('nid',$id)
                ->delete();

            // 提交事务
            Db::commit();
            return json($data);
        } catch (\Exception $e) {
            // 回滚事务
            Db::rollback();
            $data['status'] = false;
            return json($data);
        }
    }

    // 修改状态
    public function doStatus($id)
    {
        $res = Db::name('node')
            ->field('status')
            ->find($id);
        if ($res['status'] == 1) {
            $arr = ['status'=>0];
            $data = Db::name('node')
                ->where('id',$id)
                ->update($arr);
            if ($data) {
                return json($arr);
            }
        } else {
            $arr = ['status'=>1];
            $data = Db::name('node')
                ->where('id',$id)
                ->update($arr);
            if ($data) {
                return json($arr);
            }
        }
    }

    // 搜索
    public function doSearch(Request $request)
    {
        // 查询user表
        $input = $request->post()['search'];
        if ($input == '禁用') {
            $input = '0';
        } elseif ($input == '启用') {
            $input = '1';
        }
//        var_dump($input);die;
        // 查询role表
        // 查询node表
        $data = Db::name('node')
            ->field(true)
            ->whereOr('name','like','%'.$input.'%')
            ->whereOr('mname','like','%'.$input.'%')
            ->whereOr('aname','like','%'.$input.'%')
            ->whereOr('status','like','%'.$input.'%')
            ->paginate(4);


        if (!$data) {
            $data = null;
            return view('user/index',[
                'data'=>$data,
                'page'=>''
            ]);
        } else {
            // 分页
            $page = $data->render();
            $this->assign('data', $data);
            $this->assign('page', $page);
            return $this->fetch('node/index');
        }
    }
}
